package com.milo.coding.queue;

import java.util.*;

/**
 * @Auther milo
 * @Description
 * @Date 2021-01-15 10:23
 */
public class PriorityQueueTest {
    public static void main(String[] args) {
        //autoSort();
        getKMax();
    }

    /**
     * 自动排序
     */
    public static void autoSort(){
        ArrayList<Integer> list = new ArrayList<Integer>();
        PriorityQueue<Integer> queue = new PriorityQueue<Integer>(7);
        Random random = new Random();
        for(int i=0;i<7;i++){
            Integer j = new Integer(random.nextInt(100));
            //System.out.println(j);
            queue.add(j);
        }
        System.out.println(Arrays.toString(queue.toArray()));

        Iterator it = queue.iterator();
        while(it.hasNext()){
            System.out.println(it.next());
        }


        /*int len = queue.size();
        for(int i=0;i<len;i++){
            list.add(queue.poll());
        }
        System.out.println(Arrays.toString(list.toArray()));*/


    }

    /**
     * 取一个乱序数组的第K大的元素,不考虑重复
     * 对比排序算法
     */
    public static void getKMax(){
        int[] arr = new int[]{1,4,2,3,7,5,6,9,6,10};
        PriorityQueue<Integer> queue = new PriorityQueue<>(arr.length);
        for(int num : arr){
            queue.add(num);
            //当queue的大小大于k，每次弹出堆顶的最小元素；
            if(queue.size() > 7) queue.poll();
        }
        System.out.println(queue.peek());
    }
}
